SQL Serverで金額を扱える型
金額を扱う場合はmoney型で揃えるのが良い?
一概にそうとは言えない
money型実装されたのっていつから?
比較的新しめの機能?
いつからあるのかわからない
用意されている型を使わずにあえてintやdecimalを使うメリットは?
日付をnvarcharでYYMMDD格納しているような感じがある
悪くはないが…
提供されているものは使った方がよい?
日付にはdatetime, datedime2型を使うような
リソースを富豪的に使うことになる
小数以下を使わない金額でも常に小数以下の領域を確保するため
money型の範囲を超える桁を扱う場合はbigintなどを使う必要がある
-922,337,203,685,477.5807から922,337,203,685,477.5807
DBサーバーのディスク容量や性能がシビアな時はやめた方がいい?
サーバーにゆとりがあるならmoneyが良い?
金額にはmoneyを使うべき?(MUST)
moneyを使ってもよい?(MAY)
money型
4桁小数に固定される
money型以上の桁を使用する場合はdecimalなどの他のデータ型を選択する必要がある
通貨文字を格納しているわけではない
異なる通貨を一緒に使用すべきではない
既に運用しているシステムで、色々なテーブルに金額と思われるカラムがあるが、型がまちまちだった場合
テーブルA intなどの時
小数点は考慮しない金額なのかな、と思う
テーブルB decimalなどの時
小数点を考慮する金額なのかな、と思う
テーブルC nvarcharなどの時
なんで文字列で格納してるのかな、と思う
テーブルD moneyなどの時
なんでここだけmoney型使っているのかな、と思う
混乱する
その上で、機能追加で金額カラムを追加することになった場合
どれに寄せるのがベストなのか
int, decimal, numeric, money
float, real
小数点を指定できない
参考
原文だと「This maps to a SQL Server XXXXX type」